package cn.biplam.common.bean.md;

import java.io.Serializable;

import cn.biplam.common.bean.Bean;
import cn.biplam.common.client.OperatorResult;
import cn.biplam.common.wrapper.D2KArray;
import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.common.wrapper.UserInfo;

/**
 * 表外键关系描述格式化
 * (格式：(主键表名,主键表中文名,外键表名,外键表中文名,外键字段关系表达式))
 * @author XiaoRuxing Oct 26, 20099:27:38 AM
 * @version 1.0
 */
public abstract class MdTableFk extends Bean implements Serializable{

	protected String userId;
	protected String modelType;
	protected String tableId;
	protected D2KArray<String> fkRelations;
	protected UserInfo mUser;
	protected OperatorResult fkRelationResult;
	/** 外键字段关系表达式包含表信息 */
	protected boolean colExpIncludeTab = true;

	/** 表过滤条件*/
	protected String tableFilter;

	/**
	 *  设置外键字段关系表达式是否包含表信息
	 * @param isIncludeTable
	 */
	public abstract void setColExpInTab(boolean isIncludeTable);

	/**
	 *  
	 * @return 获取当前表为外键表的所有外键关系描述
	 *   (格式：(主键表名,主键表中文名,外键表名,外键表中文名,外键字段关系表达式))
	 * @throws ErrorMessage 
	 */
	public abstract OperatorResult getFkByForeignTable() throws ErrorMessage;

	/**
	 *  
	 * @return 获取当前表为主键表的所有外键关系描述
	 *   (格式：(主键表名,主键表中文名,外键表名,外键表中文名,外键字段关系表达式))
	 * @throws ErrorMessage 
	 */
	public abstract OperatorResult getFkByMainTable() throws ErrorMessage;

	/**
	 * 新建表外键信息获取对象实例
	 * @param userId    用户ID
	 * @param modelType 模型类型
	 * @param tableId   表ID
	 * @return 实例
	 * @throws ErrorMessage
	 */
	public static MdTableFk getNewInstance(String userId,
			String modelType,
			String tableId) throws ErrorMessage{
		return (MdTableFk)get(MdTableFk.class.getSimpleName(), userId, modelType, tableId);
	}

	/**
	 * 新建表外键信息获取对象实例
	 * @param userId    		用户ID
	 * @param modelType 		模型类型(Model_Type)
	 * @param tableId   		表ID
	 * @param tableFilter		表过滤条件(格式:'id','id)
	 * @return 实例
	 * @throws ErrorMessage
	 */
	public static MdTableFk getNewInstance(String userId,
			String modelType,
			String tableId,
			String tableFilter
	) throws ErrorMessage{
		return (MdTableFk)get(MdTableFk.class.getSimpleName(), userId, modelType, tableId,tableFilter);
	}
}
